d1a2e7c55d0019ffa31e5ff9f78eb7bd72181658,scim-sdk/src/main/java/com/unboundid/scim/wink/AbstractSCIMResource.java,AbstractSCIMResource,patchUser,#RequestContext#String#InputStream#,618
Before Change
final InputStream inputStream)
{
final Unmarshaller unmarshaller;
if (requestContext.getConsumeMediaType().equals(
MediaType.APPLICATION_JSON_TYPE))
{
unmarshaller = new JsonUnmarshaller();
resourceStats.incrementStat(ResourceStats.PATCH_CONTENT_JSON);
}
else
{
unmarshaller = new XmlUnmarshaller();
resourceStats.incrementStat(ResourceStats.PATCH_CONTENT_XML);
}
Response.ResponseBuilder responseBuilder;
try {
String authID = requestContext.getAuthID();
if(authID == null && tokenHandler == null)
{
throw new UnauthorizedException("Invalid credentials");
}
// Parse the resource.
final BaseResource patchedResource = unmarshaller.unmarshal(
inputStream, resourceDescriptor, BaseResource.BASE_RESOURCE_FACTORY);
final String attributes =
requestContext.getUriInfo().getQueryParameters().getFirst(
QUERY_PARAMETER_ATTRIBUTES);
final SCIMQueryAttributes queryAttributes =
new SCIMQueryAttributes(resourceDescriptor, attributes);
// Process the request.
PatchResourceRequest patchResourceRequest =
new PatchResourceRequest(requestContext.getUriInfo().getBaseUri(),
authID, resourceDescriptor, userID,
patchedResource.getScimObject(), queryAttributes);
if (authID == null)
{
AtomicReference<String> authIDRef = new AtomicReference<String>();
Response response = validateOAuthToken(requestContext,
patchResourceRequest, authIDRef, tokenHandler);
if (response != null)
{
resourceStats.incrementStat("patch-" + response.getStatus());
return response;
}
else
{
authID = authIDRef.get();
patchResourceRequest =
new PatchResourceRequest(requestContext.getUriInfo().getBaseUri(),
authID, resourceDescriptor, userID,
patchedResource.getScimObject(), queryAttributes);
}
}
final BaseResource scimResponse =
backend.patchResource(patchResourceRequest);
// Build the response.
if (!queryAttributes.allAttributesRequested())
{
responseBuilder = Response.status(Response.Status.OK);
setResponseEntity(responseBuilder, requestContext.getProduceMediaType(),
scimResponse);
}
else
{
responseBuilder = Response.status(Response.Status.NO_CONTENT);
}
resourceStats.incrementStat(ResourceStats.PATCH_OK);
} catch (SCIMException e) {
// Build the response.
responseBuilder = Response.status(e.getStatusCode());
setResponseEntity(responseBuilder, requestContext.getProduceMediaType(),
e);
resourceStats.incrementStat("patch-" + e.getStatusCode());
}
if(requestContext.getProduceMediaType() == MediaType.APPLICATION_JSON_TYPE)
{
resourceStats.incrementStat(ResourceStats.PATCH_RESPONSE_JSON);
}
else if(requestContext.getProduceMediaType() ==
After Change
ResourceDescriptor resourceDescriptor = null;
Response.ResponseBuilder responseBuilder;
try {
backend = getBackend(endpoint);
resourceDescriptor = backend.getResourceDescriptor(endpoint);
if(resourceDescriptor == null)
{
throw new InvalidResourceException(
endpoint + " is not a valid resource endpoint");
}
String authID = requestContext.getAuthID();
if(authID == null && tokenHandler == null)
{
throw new UnauthorizedException("Invalid credentials");
}
final Unmarshaller unmarshaller;
if (requestContext.getConsumeMediaType().equals(
MediaType.APPLICATION_JSON_TYPE))
{
unmarshaller = new JsonUnmarshaller();
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat(ResourceStats.PATCH_CONTENT_JSON);
}
else
{
unmarshaller = new XmlUnmarshaller();
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat(ResourceStats.PATCH_CONTENT_XML);
}
// Parse the resource.
final BaseResource patchedResource = unmarshaller.unmarshal(
inputStream, resourceDescriptor, BaseResource.BASE_RESOURCE_FACTORY);
final String attributes =
requestContext.getUriInfo().getQueryParameters().getFirst(
QUERY_PARAMETER_ATTRIBUTES);
final SCIMQueryAttributes queryAttributes =
new SCIMQueryAttributes(resourceDescriptor, attributes);
// Process the request.
PatchResourceRequest patchResourceRequest =
new PatchResourceRequest(requestContext.getUriInfo().getBaseUri(),
authID, resourceDescriptor, userID,
patchedResource.getScimObject(), queryAttributes,
requestContext.getRequest());
if (authID == null)
{
AtomicReference<String> authIDRef = new AtomicReference<String>();
Response response = validateOAuthToken(requestContext,
patchResourceRequest, authIDRef, tokenHandler);
if (response != null)
{
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat("patch-" + response.getStatus());
return response;
}
else
{
authID = authIDRef.get();
patchResourceRequest =
new PatchResourceRequest(requestContext.getUriInfo().getBaseUri(),
authID, resourceDescriptor, userID,
patchedResource.getScimObject(), queryAttributes,
requestContext.getRequest());
}
}
final BaseResource scimResponse =
backend.patchResource(patchResourceRequest);
// Build the response.
if (!queryAttributes.allAttributesRequested())
{
responseBuilder = Response.status(Response.Status.OK);
setResponseEntity(responseBuilder, requestContext.getProduceMediaType(),
scimResponse);
}
else
{
responseBuilder = Response.status(Response.Status.NO_CONTENT);
}
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat(ResourceStats.PATCH_OK);
if(requestContext.getProduceMediaType() ==
MediaType.APPLICATION_JSON_TYPE)
{
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat(ResourceStats.PATCH_RESPONSE_JSON);
}
else if(requestContext.getProduceMediaType() ==
MediaType.APPLICATION_XML_TYPE)
{
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat(ResourceStats.PATCH_RESPONSE_XML);
}
} catch (SCIMException e) {
// Build the response.
responseBuilder = Response.status(e.getStatusCode());
setResponseEntity(responseBuilder, requestContext.getProduceMediaType(),
e);
if(resourceDescriptor != null)
{
application.getStatsForResource(resourceDescriptor.getName()).
incrementStat("patch-" + e.getStatusCode());
}
}